package pers.cz.common.annotation;

import pers.cz.common.sharding.ShardingStrategy;

import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

@Target(TYPE)
@Retention(RUNTIME)
public @interface Rule {

    /**
     * 分表字段
     * @return
     */
    String key();

    /**
     * 分表计算策略
     * @return
     */
    ShardingStrategy strategy();

    /**
     * 参数，如果指定为取模运算时，需要配合该字段取模
     * @return
     */
    String[] functionConstructorParams() default {};

    String modulus() default "";

}
